/**
 * 
 */
package soa.security.dao;

import java.util.List;
import java.util.Map;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.ldap.query.SearchScope;

import soa.security.domain.Account;
import soa.security.domain.Applsystem;

/**
 * @author CreGu
 *
 */
public interface AccountDao extends SpringLdapDao<Account> {
	
	List<String> allApplsystems(Account account);
	
	List<Account> allAccounts(String baseDn, SearchScope searchScope,
			Map<String, Object> parameters);

	Page<Account> allAccounts(String baseDn, org.ldaptive.SearchScope searchScope,
			Map<String, Object> parameters, PageRequest pageRequest) throws Exception;

	List<Account> allAccounts(String baseDn, SearchScope searchScope,
			String personUid);

	void pwdUpdate(String dn, String password);

	void disable(String dn, boolean b);

	Account authenticate(String uid, String password);

	Account findByUid(String uid);

	byte[] findStoredPassword(String uid);

	boolean isPwdLockout(String uid);

	void bind(String dn, String personId);
	
	void addApplsystems(Account account, Applsystem a);
}
